您现在的位置是:首页 > python教程 > 正文

Python PIL 图像压缩教程与实践

编辑:本站更新:2024-09-07 01:23:12人气:4853
在Python编程领域中,PIL(Python Imaging Library)是一个强大而实用的图像处理库。它为开发者提供了丰富的功能来操作和修改各种格式的图片,并且支持包括JPEG、PNG在内的多种常见文件类型进行读取、保存以及压缩等操作。下面将深入探讨如何使用PIL来进行图像压缩。

**一、安装并导入**

首先确保已经正确地安装了Pillow模块,它是PIL的一个更新更活跃版本。可以通过pip命令行工具轻松完成:

bash

pip install Pillow


然后,在你的python脚本里引入该库:

python

from PIL import Image
import os


**二、打开及查看原图基本信息**

通过Image对象可以加载本地存储的照片,同时获取原始图片尺寸和其他相关信息。

python

img = Image.open('path_to_your_image.jpg')
print(f"Original image size: {img.size}, mode: {img.mode}")


**三、图像质量调整与压缩**

对于 JPEG 格式图像而言,我们可以直接利用 `save()` 方法中的 quality 参数实现有损压缩以减小体积大小。quality参数范围从0到100,默认值是75;数值越低则表示品质损失越大但文件也会相应变得更小。

以下是如何设置不同级别的质量和输出新的压缩后的照片的例子:

python

# 压缩至指定的质量等级
output_path = 'compressed_image.jpg'
compression_quality = 60 # 可自定义

# 进行情感化压缩并且保持相同的模式
optimized_img = img.copy()
optimized_img.save(output_path, "JPEG", optimize=True, quality=compression_quality)

print("Compression completed.")


而对于 PNG 和 GIF 等无损或索引色彩类型的图片,则主要依赖于优化算法减少颜色数或者采用特定编码方式等方式达到一定的“视觉”上的压缩效果而非真正意义上的像素数据丢失。

需要注意的是,过度压缩可能会导致画质严重下降甚至产生失真现象,请合理权衡空间占用需求和画面清晰度要求选择合适的压缩级别。

**四、批量压缩实例应用**

如果你需要对某个目录下的所有图片执行相同的操作,可以遍历整个目录并通过循环结构调用上述方法:

python

def batch_compress(input_dir, output_dir):
if not os.path.exists(output_dir):
os.makedirs(output_dir)

for filename in os.listdir(input_dir):
filepath = os.path.join(input_dir, filename)
try:
with Image.open(filepath) as im:
out_filepath = os.path.join(output_dir, filename)

# 执行实际的压缩动作
compressed_im = im.copy()
compressed_im.save(out_filepath, format='JPEG',optimize=True, quality=compress_level)

except Exception as e:
print(f'Error processing file {filename}: {e}')

batch_compress('./input_images/', './compressed_output/')


总结来说,Python 的 PIL 库为我们提供了一种便捷有效的方法去控制和调节图像的压缩程度,无论是针对单个文件还是大规模的应用场景都能很好地满足我们的开发需求。只需灵活运用相关API接口,就能让您的项目具备强大的图像处理能力。
关注公众号

www.php580.com PHP工作室 - 全面的PHP教程、实例、框架与实战资源

PHP学习网是专注于PHP技术学习的一站式在线平台,提供丰富全面的PHP教程、深入浅出的实例解析、主流PHP框架详解及实战应用,并涵盖PHP面试指南、最新资讯和活跃的PHP开发者社区。无论您是初学者还是进阶者,这里都有助于提升您的PHP编程技能。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

最新推荐

本月推荐